# 作用；
# 决定类的实例将具有哪些属性，限制要添加的实例属性
# 节省内存空间
class Student(object):
    # __slots__ = ('name','age')
    def __str__(self):
        return '{}{}'.format(self.name,self.age)
    pass
xw=Student()
xw.name='小王'
xw.age=20
xw.store=90#没有在__slots__中定义就无法添加这个属性
print(xw.__dict__)#如果不指定__slots__属性，则默认所有可以用的属性都在__dict__属性中存储，但占用内存空间大
print(xw)
# 在继承关系当中的使用__slots__
# 子类未声明__slots__时，就不会继承父类的__slots__，此时子类可以随意添加属性
# 子类如果声明了__slots__时，就会继承父类的__slots__，子类__slots__的范围是父类+自身的__slots__，所以无需再填写父类限制的属性
class subStudent(Student):
    __slots__=('gender','pro')
    pass
ln=subStudent
ln.gender='男'
ln.pro='计算机信息管理'
print(ln.gender,ln.pro)